c++
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr int N=1e5+5;
constexpr int M=6e5+5;
int n,m;
int head[N],to[M],nxt[M],tot=1;
void add(int u,int v){
nxt[++tot]=head[u];
to[tot]=v;
head[u]=tot;
}
int dfn[N],low[N],timer;
int a[M>>1],b[M>>1],cnt;
bool tarjan(int u,int e){
dfn[u]=low[u]=++timer;
for(int i=head[u];i;i=nxt[i]){
if((i^1)==e)continue;
int v=to[i];
if(!dfn[v]){
if(!tarjan(v,i))return false;
low[u]=std::min(low[u],low[v]);
if(low[v]>dfn[u]){
return false;
}
a[cnt]=u;
b[cnt++]=v;
}else if(dfn[v]<dfn[u]){
low[u]=std::min(low[u],dfn[v]);
a[cnt]=u;
b[cnt++]=v;
}
}
return true;
}
void fc() {
std::cin>>n>>m;
for(int i=0;i<m;i++){
int u,v;std::cin>>u>>v;
add(u,v);add(v,u);
}
if(!tarjan(1,0)){
std::cout<<"0";return;
}
for(int i=0;i<cnt;i++)std::cout<<a[i]<<" "<<b[i]<<"\n";
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
while (t--) fc();
return 0;
}